///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     struct ListNode *next;
// * };
// */
//struct ListNode* swapNodes(struct ListNode* head, int k) {
//    struct ListNode* fail = head;
//    int L = 0;
//    int arr[100000];
//    int i = 0;
//    while (fail) {
//        arr[i++] = fail->val;
//        fail = fail->next;
//        L++;
//    }
//    int temp = arr[k - 1];
//    arr[k - 1] = arr[L - k];
//    arr[L - k] = temp;
//    fail = head;
//    i = 0;
//    while (fail) {
//        fail->val = arr[i++];
//        fail = fail->next;
//    }
//    return head;
//}

//struct ListNode* swapNodes(struct ListNode* head, int k) {
//    struct ListNode* fast, * slow, * swap;
//    fast = slow = head;
//    int i;
//    for (i = 1; i < k; ++i) {
//        fast = fast->next;
//    }
//    swap = fast;
//    while (fast->next) {
//        fast = fast->next;
//        slow = slow->next;
//    }
//    i = swap->val;
//    swap->val = slow->val;
//    slow->val = i;
//    return head;
//}
